/*
 * metismenu - v1.1.3
 * Easy menu jQuery plugin for Twitter Bootstrap 3
 * https://github.com/onokumus/metisMenu
 *
 * Made by Osman Nuri Okumus
 * Under MIT License
 */
;(function ($, window, document, undefined) {

  var pluginName = "metisMenu",
      defaults = {
        toggle: true,
        doubleTapToGo: false
      };

  function Plugin(element, options) {
    this.element = $(element);
    this.settings = $.extend({}, defaults, options);
    this._defaults = defaults;
    this._name = pluginName;
    this.init();
  }

  Plugin.prototype = {
    init: function () {

      var $this = this.element,
          $toggle = this.settings.toggle,
          obj = this;

      if (this.isIE() <= 9) {
        $this.find("li.active").has("ul").children("ul").collapse("show");
        $this.find("li").not(".active").has("ul").children("ul").collapse(
            "hide");
      } else {
        $this.find("li.active").has("ul").children("ul").addClass(
            "collapse in");
        $this.find("li").not(".active").has("ul").children("ul").addClass(
            "collapse");
      }

      //add the "doubleTapToGo" class to active items if needed
      if (obj.settings.doubleTapToGo) {
        $this.find("li.active").has("ul").children("a").addClass(
            "doubleTapToGo");
      }

      $this.find("li").has("ul").children("a").on("click" + "." + pluginName,
          function (e) {
            e.preventDefault();

            //Do we need to enable the double tap
            if (obj.settings.doubleTapToGo) {

              //if we hit a second time on the link and the href is valid, navigate to that url
              if (obj.doubleTapToGo($(this)) && $(this).attr("href") !== "#"
                  && $(this).attr("href") !== "") {
                e.stopPropagation();
                document.location = $(this).attr("href");
                return;
              }
            }

            $(this).parent("li").toggleClass("active").children("ul").collapse(
                "toggle");

            if ($toggle) {
              $(this).parent("li").siblings().removeClass("active").children(
                  "ul.in").collapse("hide");
            }

          });
    },

    isIE: function () { //https://gist.github.com/padolsey/527683
      var undef,
          v = 3,
          div = document.createElement("div"),
          all = div.getElementsByTagName("i");

      while (
          div.innerHTML = "<!--[if gt IE " + (++v) + "]><i></i><![endif]-->",
              all[0]
          ) {
        return v > 4 ? v : undef;
      }
    },

    //Enable the link on the second click.
    doubleTapToGo: function (elem) {
      var $this = this.element;

      //if the class "doubleTapToGo" exists, remove it and return
      if (elem.hasClass("doubleTapToGo")) {
        elem.removeClass("doubleTapToGo");
        return true;
      }

      //does not exists, add a new class and return false
      if (elem.parent().children("ul").length) {
        //first remove all other class
        $this.find(".doubleTapToGo").removeClass("doubleTapToGo");
        //add the class on the current element
        elem.addClass("doubleTapToGo");
        return false;
      }
    },

    remove: function () {
      this.element.off("." + pluginName);
      this.element.removeData(pluginName);
    }

  };

  $.fn[pluginName] = function (options) {
    this.each(function () {
      var el = $(this);
      if (el.data(pluginName)) {
        el.data(pluginName).remove();
      }
      el.data(pluginName, new Plugin(this, options));
    });
    return this;
  };

})(jQuery, window, document);
